/**
 * JSSDKUtil
 * @author VRV
 */
const jssdkUtil = {
  name: 'JSSDKUtil',
  version: '1.0',
};
const methodsToPatch = ['getStore', 'setStore', 'deleteStore'];

methodsToPatch.forEach(item => {
  Object.defineProperty(jssdkUtil, item, {
    get: function() {
      return function(...args) {
        // 解析存储方法参数
        if (item.endsWith('Store')) {
          args = {
            key: args[0],
            value: args[1] + '',
          };
        } else {
          // 解析其他方法参数
          args = Object.assign({}, ...args);
        }

        return new Promise((resolve, reject) => {
          try {
            /* global vrv */
            vrv.jssdk[item]({
              ...args,
              success: function(res) {
                // console.log(`调用方法${key}结果: `, res)
                // 解析存储方法结果
                if (item === 'getStore') {
                  resolve(res.value);
                } else {
                  resolve(res);
                }
              },
            });
          } catch (error) {
            console.error('error', error);
            reject(error);
          }
        });
      };
    },
  });
});

export default jssdkUtil;
